const API = require('../../utils/api.js')

Page({
  /**
   * 页面的初始数据
   */
  data: {
    title: '',
    content: '',
    summary: '',
    articleType: '',
    articleTypeIndex: 0,
    selectedTypeName: '',
    articleTypeList: [
      { name: '技术讨论', value: '1' },
      { name: '约球交友', value: '2' },
      { name: '赛事评论', value: '3' },
      { name: '装备交流', value: '4' }
    ],
    loading: false
  },

  /**
   * 生命周期函数--监听页面加载
   */
  async onLoad(options) {
    try {
      this.setData({
        articleId: options.id || ''
      })
      // 根据是否有id参数来设置页面标题
      if (options.id) {
        wx.setNavigationBarTitle({ title: '编辑文章' })
        await this.loadArticleDetail(options.id)
      } else {
        wx.setNavigationBarTitle({ title: '发布文章' })
      }
    } catch (error) {

    }
  },

  /**
   * 加载文章详情
   */
  async loadArticleDetail(id) {
    try {
      wx.showLoading({ title: '加载中...' })
      const articleDetail = await API.getArticleDetail(id)
      // 查找文章类型在列表中的索引
      const typeIndex = this.data.articleTypeList.findIndex(item => item.value === articleDetail.articleType)
      
      // 获取选中的类型名称
      let selectedName = ''
      if (typeIndex !== -1) {
        selectedName = this.data.articleTypeList[typeIndex].name
      }
      
      // 填充表单数据
      this.setData({
        title: articleDetail.title,
        content: articleDetail.content,
        summary: articleDetail.summary,
        articleType: articleDetail.articleType,
        selectedTypeName: selectedName,
        articleTypeIndex: typeIndex !== -1 ? typeIndex : 0
      })
      
      wx.hideLoading()
    } catch (error) {
      console.error('加载文章详情失败:', error)
      wx.hideLoading()
      wx.showToast({
        title: '加载文章详情失败',
        icon: 'none'
      })
    }
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
  },

  // 输入标题
  onTitleInput(e) {
    this.setData({
      title: e.detail.value
    })
  },

  // 输入内容
  onContentInput(e) {
    this.setData({
      content: e.detail.value
    })
  },

  // 输入摘要
  onSummaryInput(e) {
    this.setData({
      summary: e.detail.value
    })
  },

  // 选择文章类型
  onTypeChange(e) {
    // 获取选择的索引
    const index = e.detail.value
    // 根据索引获取实际的文章类型值和名称
    const selectedType = this.data.articleTypeList[index].value
    const selectedName = this.data.articleTypeList[index].name
    
    console.log('选择的类型索引:', index, '实际值:', selectedType)
    this.setData({
      articleType: selectedType,
      selectedTypeName: selectedName
    })
  },

  // 表单验证
  validateForm() {
    const { title, content, summary, articleType } = this.data
    if (!title.trim()) {
      wx.showToast({ title: '请输入文章标题', icon: 'none' })
      return false
    }
    if (!content.trim()) {
      wx.showToast({ title: '请输入文章内容', icon: 'none' })
      return false
    }
    if (!summary.trim()) {
      wx.showToast({ title: '请输入文章摘要', icon: 'none' })
      return false
    }
    if (!articleType) {
      wx.showToast({ title: '请选择文章类型', icon: 'none' })
      return false
    }
    return true
  },

  // 提交文章
  async submitArticle() {
    if (!this.validateForm()) {
      return
    }
    this.setData({ loading: true })
    try {
      const { title, content, summary, articleType, articleId } = this.data
      const data = {
        title: title.trim(),
        content: content.trim(),
        summary: summary.trim(),
        articleType: articleType
      }
      
      // 如果有articleId，说明是编辑模式，需要将id传递给后端
      if (articleId) {
        data.id = articleId
      }
      console.log(data)
      // 调用添加文章API
      const res = await API.addArticle(data)
      this.setData({ loading: false })
      wx.showToast({
        title: '发布成功',
        icon: 'success',
        complete: () => {
          setTimeout(() => {
            wx.navigateBack()
          }, 1500)
        }
      })
    } catch (error) {
      console.error('发布文章失败:', error)
      this.setData({ loading: false })
      wx.showToast({
        title: '发布失败，请重试',
        icon: 'none'
      })
    }
  },

  // 取消发布
  cancelPublish() {
    wx.navigateBack()
  }
})